<?php

require 'database.php';

class Banco{
// adiciona no banco
	public function adicionaReqServico(reqservico $req){
		// insert data
			$pdo = Database::connect();
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "INSERT INTO reqservico (solicitante, matricula, data, cargo, email, setor, ramal, servico, local_reparo, descricao) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
			$q = $pdo->prepare($sql);
			$q->execute(array($req->getSolicitante(), $req->getMatricula(), $req->getData(), $req->getCargo(), $req->getEmail(), $req->getSetor(), $req->getRamal(), $req->getServico(), $req->getLocalReparo(), $req->getDescricao()));
			
		// retorna o último id inserido
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "select max(idservico) as id from reqservico";
			$q = $pdo->prepare($sql);
			$q->execute();
			$resposta = $q->fetch(PDO::FETCH_ASSOC);		
			//echo $resposta['id'];
		
		// inicia uma sessão para salvar o id na sessão
			session_start();
			$_SESSION['iden'] = $resposta['id'];
			//echo $_SESSION['id'];
			
			
			
			Database::disconnect();
			header("Location: ../index.php?id_=exibe");
	}
	
	// retorna requerimento
	public function retornaReqServico($id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * FROM reqservico where idservico = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		Database::disconnect();
		//echo $data['solicitante'];
		//echo $data['matricula'];
		return $data;
	}
	
	public function adicionaReqVeiculo(reqveiculo $req, reserva $reserva){
		//insere dados
		$pdo = Database::connect();
			
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "INSERT INTO reserva (veiculo, data_hora_ida, data_hora_volta) values(?, ?, ?)";
			$q = $pdo->prepare($sql);
			$q->execute(array($reserva->getVeiculo(), $reserva->getDataHoraIda(), $reserva->getDataHoraVolta()));
			
			$sql = "select max(idreserva) as id from reserva";
			$q = $pdo->prepare($sql);
			$q->execute();
			$id_reserva = $q->fetch(PDO::FETCH_ASSOC);
			
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "INSERT INTO reqveiculo (solicitante, matricula, data, cargo, email, setor, ramal, roteiro, finalidade, passageiros, idreserva) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
			$q = $pdo->prepare($sql);
			$q->execute(array($req->getSolicitante(), $req->getMatricula(), $req->getData(), $req->getCargo(), $req->getEmail(), $req->getSetor(), $req->getRamal(), $req->getRoteiro(), $req->getFinalidade(), $req->getPassageiros(), $id_reserva['id']));
	
			// retorna o último id inserido
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "select max(idservico) as id from reqveiculo";
			$q = $pdo->prepare($sql);
			$q->execute();
			$resposta = $q->fetch(PDO::FETCH_ASSOC);		
			//echo $resposta['id'];
			
			// inicia uma sessão para salvar o id na sessão
			session_start();
			$_SESSION['iden'] = $resposta['id'];
			
			Database::disconnect();
			echo "Sucesso!";
			header("Location: ../index.php?id_=exibe_veiculo");
			//header("Location: ../exibereqveiculo.php");
	}
	
	public function retornaReqVeiculo($id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * FROM reqveiculo where idservico = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		Database::disconnect();
		//echo $data['solicitante'];
		//echo $data['matricula'];
		return $data;
	}
	
	public function retornaReqVeiculoCompleto($id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT idservico, solicitante, matricula, data, status, veiculo, data_hora_ida, data_hora_volta FROM reqveiculo req, reserva re WHERE req.idservico = ? AND req.idreserva = re.idreserva";
		//$sql = "SELECT * FROM reqveiculo where idservico = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		Database::disconnect();
		return $data;
	}
	
	public function retornaReserva($id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT * FROM reserva where idreserva = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($id));
		$data = $q->fetch(PDO::FETCH_ASSOC);
		Database::disconnect();
		return $data;	
	}
	
	public function retornaVeiOcupados($data_hora_partida, $data_hora_volta){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "SELECT veiculo 
				FROM reserva r 
				WHERE NOT 
				((r.data_hora_ida >= ? && r.data_hora_ida < ? && r.data_hora_volta >= ?) OR 
				(r.data_hora_ida >= ? && r.data_hora_volta <= ?) OR 
				(r.data_hora_ida <= ? && r.data_hora_volta >= ?) OR 
				(r.data_hora_ida <= ? && r.data_hora_volta > ? && r.data_hora_volta <= ?)) 
				AND r.veiculo NOT IN 
				(SELECT veiculo 
				FROM reserva r 
				WHERE 
				((r.data_hora_ida >= ? && r.data_hora_ida < ? && r.data_hora_volta >= ?) OR 
				(r.data_hora_ida >= ? && r.data_hora_volta <= ?) OR 
				(r.data_hora_ida <= ? && r.data_hora_volta >= ?) OR 
				(r.data_hora_ida <= ? && r.data_hora_volta > ? && r.data_hora_volta <= ?))
				AND (r.status = 'pendente' OR r.status = 'aprovado'))
				GROUP BY veiculo";
		$q = $pdo->prepare($sql);
		$q->execute(array($data_hora_partida, $data_hora_volta, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_volta, $data_hora_partida, $data_hora_partida, $data_hora_volta));
		$data = $q->fetchAll(PDO::FETCH_ASSOC);
		Database::disconnect();
		session_start();
		$_SESSION['info'] = $data;
		header("Location: ../index.php?id_=disponibilidade");
		//header("Location: ../consultadisp.php");
	}
	
	public function salvaStatus($status, $justificativa, $id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "UPDATE reqservico SET status = ?, justificativa = ? WHERE idservico = ?";
		$q = $pdo->prepare($sql);
		$q->execute(array($status, $justificativa, $id));
		Database::disconnect();
		header("Location: ../principal_aprova.php?id_=servico");
	}
	
	public function salvaStatusVeiculo($status, $justificativa, $id){
		$pdo = Database::connect();
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$sql = "UPDATE reqveiculo req, reserva r SET req.justificativa = ?, r.status = ? WHERE idservico = ? AND req.idreserva = r.idreserva";
		$q = $pdo->prepare($sql);
		$q->execute(array($justificativa, $status, $id));
		Database::disconnect();
		header("Location: ../principal_aprova.php?id_=veiculo");
	}
}
?>